<html>
<body>
Reports the following <code>MessageFormat</code> problems in property values:

<p><b>Unknown format types</b>
<p>
  <code>MessageFormat</code> supports only these format types:
<ul>
  <li>number</li>
  <li>date</li>
  <li>time</li>
  <li>choice</li>
</ul>
  Other format types will be reported.

<p><b>Unpaired quotes</b>
<pre><code>
  property.key=Shouldn't happen: {0}
</code></pre>
<p>
  A single quote is interpreted as an escape until the end of the property, and will not be present in the result string.
  In most cases this is not what is intended.
  If a single quote should be present in the result string, it has to be duplicated in the property.

<p><b>Unmatched braces</b>
<p>
  Every placeholder must have a closing brace.

<p><b>Too many quotes</b>
<p>
  In some cases (e.g. <code>it's</code>), it is expected that only one quote ends up in the result string.
  Cases where two or more quotes are placed together in the result string are reported.

<p><b>Incorrect lower bounds for nested <code>ChoiceFormat</code></b>
<p>
  Lower bounds are expected to be numbers and to be sorted in ascending order.

<p><b>Wrong number of quotes around parameters</b>
<p>
  In <code>java.text.MessageFormat</code> patterns single quotes are used for escaping.
  To keep quotes visible, they must be duplicated.
  For example when passing <code>1</code>:
<ul>
  <li><code>'{0}'</code> &rarr; <code>{0}</code></li>
  <li><code>''{0}''</code> &rarr; <code>'1'</code></li>
</ul>
<p>
  When using choice format, nested formats are evaluated as format strings themselves, and quotes will need to be duplicated twice.
  For example when passing <code>1</code>:
<ul>
  <li><code>{0, choice, 0#no|1#''{0}'' files}</code> &rarr; <code>{0} files</code></li>
  <li><code>{0, choice, 0#no|1#''''{0}'''' files}</code> &rarr; <code>'1' files</code></li>
</ul>

<p><b>Note</b>
<p>
  Property values are verified only if they contain the literal text <code>{0}</code>, <code>{0,</code>, <code>{1}</code> or <code>{1,</code>.
  This is to make sure that these property values are actually used as <code>MessageFormat</code> patterns.
</p>

<!-- tooltip end -->
<p><small>New in 2023.2</small>
</body>
</html>